﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace iNet.Media
{
	/// <summary>
	/// 中繼資料介面。
	/// </summary>
	public interface IMetadata : ICloneable
	{
		/// <summary>
		/// 取得或設定媒體的作者。
		/// </summary>
		string[] Authors { get; set; }
		/// <summary>
		/// 取得或設定媒體內容所在的城市。
		/// </summary>
		string City { get; set; }
		/// <summary>
		/// 取得或設定媒體的註解文字。
		/// </summary>
		string Comment { get; set; }
		/// <summary>
		/// 從指定的中繼資料複製屬性。
		/// </summary>
		/// <param name="metadata">指定的中繼資料。</param>
		void CopyFrom(IMetadata metadata);
		/// <summary>
		/// 取得或設定媒體的版權資訊。
		/// </summary>
		string Copyright { get; set; }
		/// <summary>
		/// 取得或設定媒體內容所在的國家或地區。
		/// </summary>
		string CountryRegion { get; set; }
		/// <summary>
		/// 取得或設定媒體建立時間。
		/// </summary>
		DateTime? CreationTime { get; set; }
		/// <summary>
		/// 取得唯讀中繼資料。
		/// </summary>
		/// <returns>唯讀中繼資料。</returns>
		IMetadata GetAsReadOnly();
		/// <summary>
		/// 取得中繼資料是否為唯讀。
		/// </summary>
		bool IsReadOnly { get; }
		/// <summary>
		/// 取得或設定媒體的關鍵字。
		/// </summary>
		string[] Keywords { get; set; }
		/// <summary>
		/// 取得或設定媒體最近更新時間。
		/// </summary>
		DateTime? LastWriteTime { get; set; }
		/// <summary>
		/// 取得或設定媒體的評價。
		/// </summary>
		int? Rating { get; set; }
		/// <summary>
		/// 取得或設定媒體的評價百分比。
		/// </summary>
		int? RatingPercentage { get; set; }
		/// <summary>
		/// 取得或設定製作媒體的軟體名稱。
		/// </summary>
		string Software { get; set; }
		/// <summary>
		/// 取得或設定媒體內容所在的省或州。
		/// </summary>
		string StateProvince { get; set; }
		/// <summary>
		/// 取得或設定媒體的主旨。
		/// </summary>
		string Subject { get; set; }
		/// <summary>
		/// 取得或設定媒體的標題。
		/// </summary>
		string Title { get; set; }
	}
}
